/**
 * API 响应类型定义
 */

/** API 命名空间 */
export namespace API {
  /**
   * 通用响应格式
   */
  export interface Response<T = any> {
    /** 状态码 */
    code: number
    /** 数据 */
    data: T
    /** 消息 */
    message: string
    /** 是否成功 */
    success: boolean
  }

  /**
   * API错误信息
   */
  export interface ErrorInfo {
    /** 错误码 */
    code: string | number
    /** 错误消息 */
    message: string
    /** 字段错误信息 */
    fields?: Record<string, string>
    /** 错误详情 */
    details?: string
    /** 错误栈 */
    stack?: string
  }

  /**
   * 分页参数
   */
  export interface PageParams {
    /** 当前页码 */
    page: number
    /** 每页条数 */
    pageSize: number
    /** 其他参数 */
    [key: string]: any
  }

  /**
   * 分页结果
   */
  export interface PageResult<T = any> {
    /** 数据列表 */
    list: T[]
    /** 总数 */
    total: number
    /** 当前页码 */
    page: number
    /** 每页条数 */
    pageSize: number
  }

  /**
   * 树形数据节点
   */
  export interface TreeNode<T = any> {
    /** 节点id */
    id: string
    /** 节点父id */
    parentId: string | null
    /** 节点名称 */
    name: string
    /** 子节点 */
    children?: TreeNode<T>[]
    /** 节点数据 */
    data?: T
  }

  /**
   * 响应状态码
   */
  export enum StatusCode {
    /** 成功 */
    SUCCESS = 200,
    /** 客户端错误 */
    BAD_REQUEST = 400,
    /** 未授权 */
    UNAUTHORIZED = 401,
    /** 禁止访问 */
    FORBIDDEN = 403,
    /** 未找到 */
    NOT_FOUND = 404,
    /** 服务器错误 */
    SERVER_ERROR = 500
  }
} 